from bokeh.palettes import Spectral5
from bokeh.sampledata.autompg import autompg as df
from bokeh.transform import factor_cmap
from bokeh.sampledata.autompg import autompg_clean as df
from bokeh.plotting import figure

def mpg():
    
    # 多维数组交互图
    df.cyl = df.cyl.astype(str)
    # df.yr = df.yr.astype(str)
    group = df.groupby(['cyl', 'mfr']) # 复合条件分组，[缸数、厂家]
    index_cmap = factor_cmap('cyl_mfr', palette=Spectral5, factors=sorted(df.cyl.unique()), end=1)
    # 画布
    p = figure(plot_width=800, plot_height=300, title="Mean MPG by # Cylinders and Manufacturer",
                   x_range=group, tooltips=[("MPG", "@mpg_mean"), ("Cyl, Mfr", "@cyl_mfr")])
    # 绘图
    p.vbar(x='cyl_mfr', top='mpg_mean', width=1, source=group,
               line_color="white", fill_color=index_cmap, ) # 尾气排放量均值
    # 其他
    p.y_range.start = 0    
    p.x_range.range_padding = 0.05  # 同css中的padding
    p.xgrid.grid_line_color = None
    p.xaxis.axis_label = "Manufacturer grouped by # Cylinders"
    p.xaxis.major_label_orientation = 1.2 # x轴标签旋转
    p.outline_line_color = None
    
    return p

def vbar():
    
    # 直方图
    p = figure(plot_width=300, plot_height=300)
    p.vbar(
    x=[1, 2, 3, 4],
    width=0.5,
    bottom=0,
    top=[1.7, 2.2, 4.6, 3.9],
    color='navy'
    )
    
    return p


    
    